package org.jeecg.modules.oms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.oms.entity.DesignFile;
import org.jeecg.modules.oms.vo.SummaryFileParseResultVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 设计文件Service接口
 */
public interface IDesignFileService extends IService<DesignFile> {
    
    /**
     * 根据订单ID获取设计文件
     */
    DesignFile getByOrderId(String orderId);
    
    /**
     * 上传汇总单文件
     */
    boolean uploadSummaryFile(String orderId, MultipartFile file, String uploadPersonId, String uploadPersonName);
    
    /**
     * 上传优化单文件
     */
    boolean uploadOptimizationFile(String orderId, MultipartFile file, String uploadPersonId, String uploadPersonName);
    
    /**
     * 获取最近上传的设计文件列表
     */
    List<DesignFile> getRecentFiles(int limit);
    
    /**
     * 获取最近上传的设计文件列表（带查询条件）
     * 
     * @param params 查询参数，包含limit, orderNo, fileType, uploadPerson, beginDate, endDate等
     * @return 设计文件列表
     */
    List<DesignFile> getRecentFiles(Map<String, Object> params);
    
    /**
     * 解析汇总单Excel文件
     * 
     * @param file 上传的Excel文件
     * @param orderId 订单ID
     * @param tenantId 租户ID
     * @return 解析结果，包含订单号、型材、玻璃和配件等信息
     */
    SummaryFileParseResultVO parseSummaryExcelFile(MultipartFile file, String orderId, Integer tenantId,Integer windowDoorType);
    
    /**
     * 处理并保存解析结果
     * 
     * @param result 解析结果
     * @param orderId 订单ID
     * @param file 上传的文件
     * @param uploadPersonId 上传人ID
     * @param uploadPersonName 上传人名称
     * @return 是否成功
     */
    boolean processSummaryFileResult(SummaryFileParseResultVO result, String orderId, 
                                    MultipartFile file, String uploadPersonId, String uploadPersonName);
} 